package com.example.kaoshi;

import java.text.DecimalFormat;
import java.util.Scanner;

import static java.lang.Math.acos;
import static java.lang.Math.sin;

/**
 * Created by Quincy on 2018/10/7.
 */
public class Kaogu {
    /**
     * 受到新考古发现的影响，小赛最近迷上了考古，帮助考古学家根据已有的发现推测古时的一些建筑结构设计。
     *最新某个区域中发现了古代祭祀场所的遗址，根据考古学者的研究，该遗址所在时代的祭祀场所通常设计为正多边形，但场所的大小和多边形角度因规模而异。
     * 多边形的每个角上设置有一个柱子，柱子之间通过绳子连接。
     * 新近出土的遗址由于受到破坏的原因，只发现了三个柱子，其余的柱子则湮灭在历史的时间长河中。
     * 根据已知的柱子坐标，考古学者请小赛帮忙计算祭祀场所可能的最小面积。

     输入

     输入的第一行为一个正整数T，表示有T组测试数据。每组测试数据有三行数据，每行为一个柱子的坐标，其绝对值不超过1000。坐标为浮点数表示，最多保留6位小数。

     输出

     对每组测试数据，在单独的一行里输出可能的最小面积，请保留6位小数。已知正多边形的角点数不超过100个。​

     样例输入

     1

     0.000000 0.000000

     1.000000 1.000000

     0.000000 1.000000

     样例输出

     1.000000
     * */

    public static double gcdx(double x, double y){
        while (Math.abs(x) > 0.000001 && Math.abs(y) > 0.000001 ){
            if (x>y) x = x - Math.floor(x/y)*y;
            else y = y- Math.floor(y/x)*x;
        }
        return x+y;
    }

    public static double getEdge(double x1, double y1, double x2, double y2){
        return Math.sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
    }

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        double PI = 3.1415926;
        int T;
        double x1, y1, x2, y2, x3, y3;
        double a, b, c;//a,b,c 为三角形边长；
        double A, B, C;//三角形角度的弧度值
        double r, S;//r 为三角形外接圆半径，S为三角形面积（用海伦公式求）
        double n;//正n边形
        double Sn;//正n边形的面积
        T = scanner.nextInt();
        while(T>0){
            x1 = scanner.nextDouble();
            y1 = scanner.nextDouble();
            x2 = scanner.nextDouble();
            y2 = scanner.nextDouble();
            x3 = scanner.nextDouble();
            y3 = scanner.nextDouble();
            a = getEdge(x1, y1, x2, y2);
            b = getEdge(x1, y1, x3, y3);
            c = getEdge(x2, y2, x3, y3);
            //三角形的角度公式cosA =（b2+c2-a2）/（2bc）;
            A = acos((b*b + c*c - a*a) / (2 * b*c));
            B = acos((a*a + c*c - b*b) / (2 * a*c));
            C = acos((a*a + b*b - c*c) / (2 * a*b));
            //求三角形的面积，用海伦公式求解面积
            double p = (a + b + c) / 2;
            S = Math.sqrt(p*(p - a)*(p - b)*(p - c));
            r = a*b*c / 4 / S;
            double temp = gcdx(A, B);
            temp = gcdx(temp, C);
            //求多边形有多少条边，用360度除以每个圆心角的度数即可，而三角形对应的顶角是正多边形圆周角，
            //根据圆周角定理，一条弧所对圆周角等于它所对圆心角的一半，所以这里用PI除以temp
            n = PI / temp;
            Sn = (r*r / 2)*sin(2 * PI / n)*n;//三角形面积公式1/2 absin（A），n个三角形
            T = T - 1;
            DecimalFormat df = new DecimalFormat("#.000000");
            System.out.println(df.format(Sn));
        }
    }
}
